// pages/shoplist/shoplist.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
		query: {},				// 参数
		shopList: [],			// 商铺列表
		page: 1,					// 页码
		pageSize: 10,			// 每页数据数量
		total: 0,					// 总数据量
		isLoading: false	// 定义节流阀，false 表示未进行请求，true 表示正在请求
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
		this.setData({query: options});
		this.getShopList();
	},
	
	/**
	 * 获取商铺列表
	 */
	getShopList(callback) {
		// 开启节流阀
		this.setData({isLoading: true});
		// 展示 loading
		wx.showLoading({title: '数据加载中...'});
		// 请求数据
		wx.request({
			url: `https://applet-base-api-t.itheima.net/categories/${this.data.query.id}/shops`,
			method: "GET",
			data: {_page: this.data.page, _limit: this.data.pageSize},
			success: (res) => {
				this.setData({
					shopList: [...this.data.shopList, ...res.data],
					total: res.header['X-Total-Count'] - 0
				})
			},
			complete: () => {
				// 隐藏 loading
				wx.hideLoading();
				// 关闭节流阀
				this.setData({isLoading: false});
				// 关闭刷新，按需关闭刷新
				// wx.stopPullDownRefresh();
				callback && callback();
			}
		});
	},

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
		// 动态设置九宫格中每个图标点击进入页面后的标题
		wx.setNavigationBarTitle({
			title: this.data.query.name
		})
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
		// 需要重置关键的数据
		this.setData({
			page: 1,
			shopList: [],
			total: 0
		});
		// 重新发起数据请求
		this.getShopList(() => {
			wx.stopPullDownRefresh();
		});
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
		if (this.data.page * this.data.pageSize >= this.data.total) {
			// 说明没有下一页数据了
			return wx.showToast({
				title: '数据加载完毕！',
				icon: 'none',
				duration: 1000,
				mask: true
			})
		};
		// 判断是否正在加载其他数据
		if (this.data.isLoading) return;
		// 页码值 +1
		this.setData({
			page: this.data.page + 1
		});
		// 获取下一页数据
		this.getShopList();
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})